Loading...
 

Algorytm solwera wielo-frontalnego

Algorytm solwera wielo-frontalnego zaproponowany został w 1987 roku jako modyfikacja algorytmu solwera frontalnego przez Iain'a Duff'a i Johna Reida [1]. Ideą algorytmu wielo-frontalnego jest wykonywanie eliminacji tak jak w algorytmie solwera frontalnego ale jednocześnie nad wieloma elementami.


Innymi słowy, w naszym przykładzie przedstawionym w tym rozdziale mamy macierz która powstała przez złożenie trzech macierzy elementowych
\( \begin{bmatrix} {\frac{1}{20}} & {\frac{13}{120}} & {\frac{1}{120}}\\ {\frac{13}{120}} & {\frac{9}{20}} & {\frac{13}{120}} \\ {\frac{1}{120}} & {\frac{13}{120}} & {\frac{1}{20}} \\ \end{bmatrix} \)
Również w tej sekcji dla lepszej ilustracji działania algorytmu pozostawimy liczby w postaci ułamkowej, pamiętając oczywiście że w komputerze przechowywane są one w postaci zmiennoprzecinkowej.
Generujemy więc wszystkie trzy macierze elementowe, i lokalizujemy (zaznaczamy na czerwono) wiersze macierzy które możemy wyeliminować
\( \begin{bmatrix} {\color{red}\frac{1}{20}} & {\color{red}\frac{13}{120}} & {\color{red}\frac{1}{120}}\\ {\frac{13}{120}} & {\frac{9}{20}} & {\frac{13}{120}} \\{\frac{1}{120}} & {\frac{13}{120}} & {\frac{1}{20}} \\ \end{bmatrix} \\ \begin{bmatrix} u_{1} \\ u_{2} \\ u_{3} \\ \end{bmatrix} = \begin{bmatrix} {\color{red}1} \\ 1 \\ 1 \end{bmatrix} \)
\( \begin{bmatrix} {\frac{1}{20}} & {\frac{13}{120}} & {\frac{1}{120}} \\{\frac{13}{120}} & {\frac{9}{20}} & {\frac{13}{120}} \\{\frac{1}{120}} & {\frac{13}{120}} & {\frac{1}{20}} \\ \end{bmatrix} \\ \begin{bmatrix} u_{2} \\ u_{3} \\ u_{4} \\ \end{bmatrix} = \begin{bmatrix} 1 \\ 1 \\ \end{bmatrix} \)
\( \begin{bmatrix} {\frac{1}{20}} & {\frac{13}{120}} & {\frac{1}{120}}\\ {\frac{13}{120}} & {\frac{9}{20}} & {\frac{13}{120}} \\{\color{red}\frac{1}{120}} & {\color{red}\frac{13}{120}} & {\color{red}\frac{1}{20}} \\ \end{bmatrix} \\ \begin{bmatrix} u_{3} \\ u_{4} \\ u_{5} \\ \end{bmatrix} = \begin{bmatrix} 1 \\ 1 \\ {\color{red}1} \end{bmatrix} \)
W naszym przypadku, gdy operujemy na funkcjach B-spline, niestety nie możemy wyeliminować żadnych wierszy z pojedynczej macierzy elementowej, chyba że scalimy trzy macierze elementowe, lub wiersze zlokalizowane są na brzegu obszaru.
Oznacza to iż z macierzy frontalnej związanej z pierwszym elementem możemy wyeliminować pierwszy wierszy
\( 1^{st}=1^{st}/A(1,1)=1^{st}/20=1^{st}*20 \)
\( \begin{bmatrix} \frac{1}{20}{\color{red}*20} & \frac{13}{120}{\color{red}*20} & \frac{1}{120}{\color{red}*20} \\ \frac{13}{120} & \frac{9}{20} & \frac{13}{120} \\ \frac{1}{120} & \frac{13}{120} & \frac{1}{20} \\ \end{bmatrix} \\ \begin{bmatrix} u_{1} \\ u_{2} \\ u_{3} \\ \end{bmatrix} = \begin{bmatrix} 1{\color{red}*20} \\ 1 \\ 1 \\ \end{bmatrix} \)
\( \begin{bmatrix} {\color{red}1} & {\color{red}\frac{13}{6}} & {\color{red}\frac{1}{6}} \\\frac{13}{120} & \frac{9}{20} & \frac{13}{120} \\\frac{1}{120} & \frac{13}{120} & \frac{1}{20} \\ \end{bmatrix} \\ \begin{bmatrix} u_{1} \\ u_{2} \\ u_{3} \\ \end{bmatrix} = \begin{bmatrix} {\color{red}20} \\ 1 \\ 1 \\ \end{bmatrix} \)
\( 2^{nd}=2^{nd}-1^{st}*A(2,1)=2^{nd}-1^{st}\frac{13}{120} \)
\( \begin{bmatrix} {\color{red}1}& {\color{red}\frac{13}{6}} & {\color{red}\frac{1}{6}} \\ \frac{13}{120}{\color{red}-1\frac{13}{120}} & \frac{9}{20}{\color{red}-\frac{13}{6}\frac{13}{120}} & \frac{13}{120}{\color{red}-\frac{1}{6}\frac{13}{120}} \\ \frac{1}{120} & \frac{13}{120} & \frac{1}{20} \\ \end{bmatrix} \\ \begin{bmatrix} u_{1} \\ u_{2} \\ u_{3} \\ \end{bmatrix} = \begin{bmatrix} {\color{red}20} \\ 1{\color{red}-20\frac{13}{120}} \\ 1 \end{bmatrix} \)
\( \begin{bmatrix} 1 & \frac{13}{6} & \frac{1}{6} \\ {\color{red}0} & {\color{red}\frac{31}{144}} & {\color{red}\frac{13}{144}} \\ \frac{1}{120} & \frac{13}{120} & \frac{1}{20} \\ \end{bmatrix} \\ \begin{bmatrix} u_{1} \\ u_{2} \\ u_{3} \\ \end{bmatrix} = \begin{bmatrix} 20 \\ {\color{red}-\frac{7}{6}} \\ 1 \end{bmatrix} \)
\( 3^{rd}=3^{rd}-1^{st}*A(3,1)=3^{rd}-1^{st}/120 \)
\( \begin{bmatrix} 1 & \frac{13}{6} & \frac{1}{6} \\ 0 & \frac{31}{144} & \frac{13}{144} \\ \frac{1}{120}{\color{red}-1\frac{1}{120}} & \frac{13}{120}{\color{red}-\frac{31}{144}\frac{1}{120}} & \frac{1}{20}{\color{red}-\frac{13}{144}\frac{1}{120}} \\ \end{bmatrix} \\ \begin{bmatrix} u_{1} \\ u_{2} \\ u_{3} \\ \end{bmatrix} = \begin{bmatrix} 20 \\ -\frac{7}{6} \\ 1{\color{red}-20\frac{1}{120}} \end{bmatrix} \)
\( \begin{bmatrix} 1 & \frac{13}{6} & \frac{1}{6} \\ 0 & \frac{31}{144} & \frac{13}{144} \\ {\color{red}0} & {\color{red}\frac{1841}{17280}} & {\color{red}\frac{864}{17280}} \\ \end{bmatrix} \\ \begin{bmatrix} u_{1} \\ u_{2} \\ u_{3} \\ \end{bmatrix} = \begin{bmatrix} 20 \\ -\frac{7}{6} \\ {\color{red}\frac{5}{6}} \end{bmatrix} \)
W macierzy związanej z drugim elementem nie ma możliwości wyeliminowania żadnego wiersza, ponieważ wszystkim wierszom brakuje pewnych kolumn, które zostaną dodane gdy połączymy tą macierz z macierzami sąsiednimi.
Podobnie w macierzy związanej z ostatnim elementem możemy wyeliminować ostatni wiersz. W macierzy tej zmieniamy kolejność wierszy tak aby wiersz do wyeliminowania znajdował się na początku
\( 1^{st}=1^{st}/A(1,1)=1^{st}/20=1^{st}*20 \)
\( \begin{bmatrix} \frac{1}{20}{\color{red}*20} & \frac{13}{120}{\color{red}*20} & \frac{1}{120}{\color{red}*20} \\ \frac{13}{120} & \frac{9}{20} & \frac{13}{120} \\ \frac{1}{120} & \frac{13}{120} & \frac{1}{20} \\ \end{bmatrix} \\ \begin{bmatrix} u_{5} \\ u_{4} \\ u_{3} \\ \end{bmatrix} = \begin{bmatrix} 1{\color{red}*20} \\ 1 \\ 1 \\ \end{bmatrix} \)
\( \begin{bmatrix} {\color{red}1} & {\color{red}\frac{13}{6}} & {\color{red}\frac{1}{6}} \\ \frac{13}{120} & \frac{9}{20} & \frac{13}{120} \\ \frac{1}{120} & \frac{13}{120} & \frac{1}{20} \\ \end{bmatrix} \\ \begin{bmatrix} u_{5} \\ u_{4} \\ u_{3} \\ \end{bmatrix} = \begin{bmatrix} {\color{red}20} \\ 1 \\ 1 \\ \end{bmatrix} \)
\( 2^{nd}=2^{nd}-1^{st}*A(2,1)=2^{nd}-1^{st}\frac{13}{120} \)
\( \begin{bmatrix} \n{\color{red}1} & {\color{red}\frac{13}{6}} & {\color{red}\frac{1}{6}} \\ \frac{13}{120}{\color{red}-1\frac{13}{120}} & \frac{9}{20}{\color{red}-\frac{13}{6}\frac{13}{120}} & \frac{13}{120}{\color{red}-\frac{1}{6}\frac{13}{120}} \\ \frac{1}{120} & \frac{13}{120} & \frac{1}{20} \\ \end{bmatrix} \\ \begin{bmatrix} u_{5} \\ u_{4} \\ u_{3} \\ \end{bmatrix} = \begin{bmatrix} {\color{red}20} \\ 1{\color{red}-20\frac{13}{120}} \\ 1 \end{bmatrix} \)
\( \begin{bmatrix} 1 & \frac{13}{6} & \frac{1}{6} \\ {\color{red}0} & {\color{red}\frac{31}{144}} & {\color{red}\frac{13}{144}} \\ \frac{1}{120} & \frac{13}{120} & \frac{1}{20} \\ \end{bmatrix} \\ \begin{bmatrix} u_{5} \\ u_{4} \\ u_{3} \\ \end{bmatrix} = \begin{bmatrix} 20 \\ {\color{red}-\frac{7}{6}} \\ 1 \end{bmatrix} \)
\( 3^{rd}=3^{rd}-1^{st}*A(3,1)=3^{rd}-1^{st}/120 \)
\( \begin{bmatrix} 1 & \frac{13}{6} & \frac{1}{6} \\ 0 & \frac{31}{144} & \frac{13}{144} \\ \frac{1}{120}{\color{red}-1\frac{1}{120}} & \frac{13}{120}{\color{red}-\frac{31}{144}\frac{1}{120}} & \frac{1}{20}{\color{red}-\frac{13}{144}\frac{1}{120}} \\ \end{bmatrix} \\ \begin{bmatrix} u_{5} \\ u_{4} \\ u_{3} \\ \end{bmatrix} = \begin{bmatrix} 20 \\ -\frac{7}{6} \\ 1{\color{red}-20\frac{1}{120}} \end{bmatrix} \)
\( \begin{bmatrix} 1 & \frac{13}{6} & \frac{1}{6} \\ 0 & \frac{31}{144} & \frac{13}{144} \\ {\color{red}0} & {\color{red}\frac{1841}{17280}} & {\color{red}\frac{864}{17280}} \\ \end{bmatrix} \\ \begin{bmatrix} u_{5} \\ u_{4} \\ u_{3} \\ \end{bmatrix} = \begin{bmatrix} 20 \\ -\frac{7}{6} \\ {\color{red}\frac{5}{6}} \end{bmatrix} \)
W tym momencie mamy więc dwie podmacierze wynikające z eliminacji jednego wiersza w pierwszej i trzeciej macierzy
\( \begin{bmatrix} {\color{red}\frac{31}{144}} & {\color{red}\frac{13}{144}} \\ {\color{red}\frac{1841}{17280}} & {\color{red}\frac{864}{17280}} \\ \end{bmatrix} \\ \begin{bmatrix} u_{2} \\ u_{3} \\ \end{bmatrix} = \begin{bmatrix} {\color{red}-\frac{7}{6}} \\ {\color{red}\frac{5}{6}} \end{bmatrix} \)
\( \begin{bmatrix} {\color{blue}\frac{31}{144}} & {\color{blue}\frac{13}{144}} \\ {\color{blue}\frac{1841}{17280}} & {\color{blue}\frac{864}{17280}} \\ \end{bmatrix} \\ \begin{bmatrix}u_{4} \\ u_{3} \\ \end{bmatrix} = \begin{bmatrix} {\color{blue}-\frac{7}{6}} \\ {\color{blue}\frac{5}{6}} \end{bmatrix} \)
Podmacierze takie, uzyskane poprzez wyeliminowanie niektórych wierszy, nazywają się macierzami dopełnienia Schura. Dodatkowo, mamy oczywiście macierz związaną z drugim elementem (ze zmiennymi \( u_{2}, u_{3}, u_{4} \)).
\( \begin{bmatrix} {\frac{1}{20}} & {\frac{13}{120}} & {\frac{1}{120}}\\ {\frac{13}{120}} & {\frac{9}{20}} & {\frac{13}{120}} \\{\frac{1}{120}} & {\frac{13}{120}} & {\frac{1}{20}} \\ \end{bmatrix} \\ \begin{bmatrix} u_{2} \\ u_{3} \\ u_{4} \\ \end{bmatrix} = \begin{bmatrix} {\color{blue}1} \\ {\color{blue}1} \\ {\color{blue}1} \end{bmatrix} \)
Oczywicie brakujące fragmenty wierszy związanych ze zmiennymi \( u_2,u_3 \) znajdują się w pierwszej podmacierzy zwanej dopełnieniem Schura, natomiast
brakujące fragmenty wierszy związanych ze zmiennymi \( u_3, u_4 \) znajdują się w podmacierzy zwanej dopełnieniem Schura związanej z trzecim elementem.
Algorytm solwera wielo-frontalnego scali teraz macierze frontalne.
\( \begin{bmatrix} {\frac{1}{20}}+{\color{red}\frac{31}{144}} & {\frac{13}{120}}{\color{red}\frac{13}{144}} & {\frac{1}{120}}\\ {\frac{13}{120}}+{\color{red}\frac{1841}{17280}} & {\frac{9}{20}}+{\color{blue}\frac{864}{17280}} & {\frac{13}{120}}+{\color{blue}\frac{1841}{17280}}+{\color{red}\frac{864}{17280}} \\{\frac{1}{120}} & {\frac{13}{120}}+{\color{blue}\frac{13}{144}} & {\frac{1}{20}}+{\color{blue}\frac{31}{144}} \\ \end{bmatrix} \\ \begin{bmatrix} u_{2} \\ u_{3} \\ u_{4} \\ \end{bmatrix} = \begin{bmatrix} {\color{blue}1} \\ {\color{blue}1} \\ {\color{blue}1} \end{bmatrix} \)
Możemy teraz dokończyć faktoryzację, uruchamiając algorytm eliminacji Gaussa na scalonej macierzy.


Ostatnio zmieniona Środa 29 z Czerwiec, 2022 10:58:29 UTC Autor: Maciej Paszynski
Zaloguj się/Zarejestruj w OPEN AGH e-podręczniki
Czy masz już hasło?

Hasło powinno mieć przynajmniej 8 znaków, litery i cyfry oraz co najmniej jeden znak specjalny.

Przypominanie hasła

Wprowadź swój adres e-mail, abyśmy mogli przesłać Ci informację o nowym haśle.
Dziękujemy za rejestrację!
Na wskazany w rejestracji adres został wysłany e-mail z linkiem aktywacyjnym.
Wprowadzone hasło/login są błędne.